Over recent years it has become commonplace for a business to provide a web site on the Internet which, for example, enables a web client to purchase goods from the business over the world wide web. Following on from this success it has more recently become a requirement to handle more complex e-business applications on the Internet which, for example, enable business to business communication and this requirement has been satisfied by the arrival of Web services. Web services are modular and enhanced e-business applications that enable programmatic interaction between applications across the Internet. Based on shared, open, and emerging technology standards and protocols, such as SOAP (Simple Object Access Protocol), UDDI (Universal Description, Discovery and Integration), and WSDL (Web Service Definition Language), Web services can communicate, interact, and integrate with heterogeneous applications, irrespective of their implementation formats. Web services can interact with one another across the Internet to facilitate dynamic integration between businesses, suppliers, partners, and customers.
For example, a web service which provides an e-business application publishes its URL in a well known UDDI directory. A client can then obtain the URL from the UDDI registry and contact the e-business using the URL in order to obtain a WSDL document. The WSDL describes the interface provided for clients by the service e-business application, one or more transport mechanisms, for example SOAP over HTTP, (HyperText Transport Protocol) and an end point address for each transport mechanism. Once a client has the WSDL it can invoke the interface via the specified end point using the specified transport mechanism. Further if the client has a e-business application with which the service e-business application may wish to communicate the client and service may exchanges WSDL documents in order to make this possible.
However, a problem associated with this method of providing web services occurs when none of the transport mechanisms supported by a target service are supported by the client, as this makes it impossible for the client to communicate directly with the target service.